module.exports = () => {
    return async (ctx, next) => {
        // 登录、注册
        // if (ctx.path === '/login' || ctx.path === '/register') {
        if (['/login', '/register'].includes(ctx.path)) {
            await next();
            return;
        }

        // 需要校验 token，先从请求头拿
        const token = ctx.headers.token;

        if (!token) {
            ctx.body = {
                code: 401,
                message: '没有 token',
            };
            return;
        }

        // 校验 token
        try {
            // 解析成功，就能拿到用户信息
            // 把它挂在到 ctx 上，方便后面的方法使用，controller、service this.ctx
            ctx.user = ctx.helper.checkToken(token);
        } catch (error) {
            if (error.name === '') {
                // ...
            }
        }

        await next();
    };
};
